const express = require("express")
const app = express()

const auth = require("./wechat/auth")
const Wechat = require("./wechat/wechat")
const {url,appID} = require("./config")
const sha1 = require("sha1")
const wechat =new Wechat()

// 配置模板资源目录
app.set("views", "./views")
// 配置模板引擎
app.set("view engine", "ejs")
// 页面路由
app.get("/search", async (req, res) => {
    // 首先生成签名
    /*
    1. 需要以下四个参数
    noncestr=Wm3WZYTPz0wzccnW 随机字符串
    jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg 临时票据
    timestamp=1414587457 时间戳
    url=http://mp.weixin.qq.com?params=value 当前服务器地址
    2. 将其进行字典排序，并用&拼接在一起
    3. 进行sha1加密
    */
    // 1. 获取到参数
    const { ticket } = await wechat.fetchTicket()
    const timestamp = Date.now(), jsapi_ticket = ticket, noncestr = Math.random().toString().split(".")[1]
    // 2. 进行字典排序
    const str = [
        `jsapi_ticket=${jsapi_ticket}`,
        `timestamp=${timestamp}`,
        `url=${url}/search`,
        `noncestr=${noncestr}`,
    ].sort().join("&")

    console.log("str",str)
    // 3. 进行sha1加密
    const signature = sha1(str)
    // 4. 将相关的参数传入到网页中
    res.render("search",{signature,noncestr,timestamp,appID})
})

// 应用中间件
app.use(auth())

app.listen(4000, () => {
    console.log("服务器启动成功");
});

